<?php

class Usuarios {

    private $codigo;
    protected $nome;
    protected $login;
    private $senha;
    private $cpf;
    private $rg;
    private $tel_residencial;
    private $celular;
    private $endereco;
    private $numero;
    private $bairro;
    private $codmunicipio;
    private $tipo;
    private $estado;
    private $codsupervisor;
    private $email;

    function __construct($codigo = null, $nome = null, $login = null, $senha = null, $cpf = null, $rg = null, $tel_residencial = null, $celular = null, $endereco = null, $numero = null, $bairro = null, $codmunicipio = null, $tipo = null, $estado = null, $codsupervisor = null, $email=null) {
        if ($codigo === null) {
            $this->setAtributos(0, '', '', '', '', '', '', '', '', '', '', '', '', '','','');
        } else if (($codigo !== null) && ($codmunicipio === null)) {
            $this->Carrega($codigo);
        } else {
            $this->setAtributos($codigo, $nome, $login, $senha, $cpf, $rg, $tel_residencial, $celular, $endereco, $numero, $bairro, $codmunicipio, $tipo, $estado, $codsupervisor,$email);
        }
    }

    public function setAtributos($codigo = null, $nome = null, $login = null, $senha = null, $cpf = null, $rg = null, $tel_residencial = null, $celular = null, $endereco = null, $numero = null, $bairro = null, $codmunicipio = null, $tipo = null, $estado = null, $codsupervisor = null, $email = null) {
        $this->setCodigo($codigo)
                ->setNome($nome)
                ->setLogin($login)
                ->setSenha($senha)
                ->setCpf($cpf)
                ->setRg($rg)
                ->setTel_residencial($tel_residencial)
                ->setCelular($celular)
                ->setEndereco($endereco)
                ->setNumero($numero)
                ->setBairro($bairro)
                ->setCodmunicipio($codmunicipio)
                ->setTipo($tipo)
                ->setEstado($estado)
                ->setCodsupervisor($codsupervisor)
                ->setEmail($email);
                
    }

    public function Carrega($codigo) {
        $conn = new DB_Config();
        $query = ("
            SELECT 
                codigo,
                nome,
                login,
                senha,
                cpf,
                rg,
                tel_residencial,
                celular,
                endereco,
                numero,
                bairro,
                codmunicipio,
                codtipo,
                estado,
                codsupervisor,
                email
            FROM 
                usuarios
            WHERE
                codigo = '$codigo'
        ");
        list($codigo, $nome, $login, $senha, $cpf, $rg, $tel_residencia, $celular, $endereco, $numero, $bairro, $codmunicipio, $codtipo, $estado, $codsupervisor, $email) = $conn->Query($query)->FetchRow();
        $this->setAtributos($codigo, $nome, $login, $senha, $cpf, $rg, $tel_residencia, $celular, $endereco, $numero, $bairro, $codmunicipio, $codtipo, $estado,$codsupervisor,$email);
    }

    public function getCodsupervisor() {
        return $this->codsupervisor;
    }

    public function setCodsupervisor($codsupervisor) {
        $this->codsupervisor = $codsupervisor;
        return $this;
    }

    public function getEstado() {
        return $this->estado;
    }

    public function setEstado($estado) {
        $this->estado = $estado;
        return $this;
    }

    public function getCodigo() {
        return $this->codigo;
    }

    public function setCodigo($codigo) {
        $this->codigo = $codigo;
        return $this;
    }

    public function getNome() {
        return $this->nome;
    }

    public function setNome($nome) {
        $this->nome = $nome;
        return $this;
    }

    public function getLogin() {
        return $this->login;
    }

    public function setLogin($login) {
        $this->login = $login;
        return $this;
    }

    public function getSenha() {
        return $this->senha;
    }

    public function setSenha($senha) {
        $this->senha = $senha;
        return $this;
    }

    public function getCpf() {
        return $this->cpf;
    }

    public function getRg() {
        return $this->rg;
    }

    public function getTel_residencial() {
        return $this->tel_residencial;
    }

    public function getCelular() {
        return $this->celular;
    }

    public function getEndereco() {
        return $this->endereco;
    }

    public function getNumero() {
        return $this->numero;
    }

    public function getBairro() {
        return $this->bairro;
    }

    public function getCodmunicipio() {
        return $this->codmunicipio;
    }

    public function getTipo() {
        return $this->tipo;
    }

    public function setCpf($cpf) {
        $this->cpf = $cpf;
        return $this;
    }

    public function setRg($rg) {
        $this->rg = $rg;
        return $this;
    }

    public function setTel_residencial($tel_residencial) {
        $this->tel_residencial = $tel_residencial;
        return $this;
    }

    public function setCelular($celular) {
        $this->celular = $celular;
        return $this;
    }

    public function setEndereco($endereco) {
        $this->endereco = $endereco;
        return $this;
    }

    public function setNumero($numero) {
        $this->numero = $numero;
        return $this;
    }

    public function setBairro($bairro) {
        $this->bairro = $bairro;
        return $this;
    }

    public function setCodmunicipio($codmunicipio) {
        $this->codmunicipio = $codmunicipio;
        return $this;
    }

    public function setTipo($tipo) {
        $this->tipo = $tipo;
        return $this;
    }
    
    public function setEmail($email){
        $this->email = $email;
        return $email;
    }
    
    public function getEmail(){
        return $this->email;
    }

    public function Insere_usuario() {
        $conn = new DB_Config();

        $query = ("INSERT INTO usuarios
                SET
                nome = '" . $this->nome . "',
                login = '" . $this->login . "',    
                senha = '" . md5($this->senha) . "',
                cpf = '" . $this->cpf . "',
                rg = '" . $this->rg . "',
                tel_residencial = '" . $this->tel_residencial . "',
                celular = '" . $this->celular . "',
                endereco = '" . $this->endereco . "',
                numero = '" . $this->numero . "',    
                bairro = '" . $this->bairro . "',
                codmunicipio = '" . $this->codmunicipio . "',
                codtipo = '" . $this->tipo . "',
                estado = '" . $this->estado . "',
                codsupervisor = '" . $this->codsupervisor . "',
                email = '" . $this->email . "'
                ");
        //die($query);
        if ($conn->Query($query)) {
            echo "Usuario cadastrado!";
        } else {
            throw new Exception('erro ao inserir usuario');
        }
    }

    public function Altera_usuario() {
        $conn = new DB_Config();
        if($this->senha == ""){
            $str_senha = "";
        }else{
            $str_senha = "senha = '".md5($this->senha)."'," ;
        }
        if ($this->codigo != '') {
            $query = ("
                UPDATE 
                    usuarios
                SET
                    nome = '" . $this->nome . "',
                    login = '" . $this->login . "',    
                    ".$str_senha."
                    cpf = '" . $this->cpf . "',
                    rg = '" . $this->rg . "',
                    tel_residencial = '" . $this->tel_residencial . "',
                    celular = '" . $this->celular . "',
                    endereco = '" . $this->endereco . "',
                    numero = '" . $this->numero . "',    
                    bairro = '" . $this->bairro . "',
                    codmunicipio = '" . $this->codmunicipio . "',
                    codtipo = '" . $this->tipo . "',
                    estado = '" . $this->estado . "',
                    codsupervisor = '" . $this->codsupervisor . "',
                    email = '" . $this->email . "'
                WHERE
                    codigo = '" . $this->codigo . "'
                    ");
            if(!$conn->Query($query)){
                throw new Exception('erro ao atualizar usuario');
            }
        } else {
            throw new Exception('codigo do usuario vazio');
        }
    }

    public function Deleta_usuario() {
        $conn = new DB_Config();

        if ($this->codigo != '') {
            $query = ("DELETE FROM usuarios WHERE codigo = " . $this->codigo . "");
            if ($conn->Query($query)) {
                echo "Usuario deletado";
            } else {
                throw new Exception("Erro ao deletar usuario");
            }
        } else {
            throw new Exception("codigo do usuario vazio");
        }
    }

    public static function Lista_usuario($extra = null) {
        $conn = new DB_Config();
        $lista = array();
        $query = ("SELECT codigo FROM usuarios " . $extra);
        $resultado = $conn->Query($query);
        while ($dados = $resultado->FetchObject()) {
            $lista[] = new Usuarios($dados->codigo);
        }
        return $lista;
    }

}

?>